package br.com.sms.action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import br.com.sms.dominio.Cidade;
import br.com.sms.dominio.Destinatario;
import br.com.sms.dto.EtiquetaDTO;
import br.com.sms.enuns.UF;
import br.com.sms.util.Mensagens;
import br.com.sms.util.MensagensErro;

public class EtiquetaAction extends Action {
	private static final long serialVersionUID = 4802455212584410224L;

	private List<UF> listaUF = new ArrayList<UF>();
	private String ufSelecionado;
	private String cep;
	private Cidade cidade;
	private List<Destinatario> listaDestinatario;
	private List<Cidade>cidades;
	
	public String pesquisar(){
		
		if(isCamposInvalidos())
			return TELA_ETIQUETA;
		
		UF uf = UF.newInstance(ufSelecionado);	
		listaDestinatario = getDestinatarioFacade().recuperarDestinatarios(uf, cidade, cep);
		
		if(listaDestinatario == null || listaDestinatario.size() == 0){
			mensagens.put("mensagem", Mensagens.NENHUM_REGISTRO_ENCONTRADO);
			apresentarMensagens();
		}
		
		getRequest().setAttribute("destinatarios", this.listaDestinatario);
		carregarCidades();
		return telaEtiquetas();
	}
	
	public String telaEtiquetas(){
	
		listaUF = UF.getListaUF();
		
		if(cidades == null)
			cidades = new ArrayList<Cidade>();
		
		return TELA_ETIQUETA;
	}
	
	public String carregarCidades(){
		UF uf = null;
		if(ufSelecionado != null && ufSelecionado.trim().length() > 0)
			uf = UF.newInstance(ufSelecionado);
		cidades = getCidadeFacade().carregarCidades(uf);
		telaEtiquetas();
		return TELA_ETIQUETA;
	}
	
	public String gerarEtiquetas(){
		EtiquetaDTO etiquetaDTO = new EtiquetaDTO();
		
		List<Destinatario> dest = new ArrayList<Destinatario>();
		
		Destinatario destinatario = new Destinatario();
		destinatario.setNome("paulo");
		
		dest.add(destinatario);
		etiquetaDTO.setDestinatarios(dest);
		
		try {
			getJasperAction().gerarPDF(etiquetaDTO);
			mensagens.put("mensagem", "PDF gerado com sucesso");
		} catch (IOException e) {
			erros.put("erro", "Não foi possivel gerar o pdf");
			e.printStackTrace();
		}
		
		return telaEtiquetas();
	}
	
	private boolean isCamposInvalidos(){
		boolean retorno = false;
		if((ufSelecionado == null || ufSelecionado.trim().length() == 0) && (cep == null || cep.trim().length() == 0)){
			erros.put("erro", MensagensErro.CAMPOS_PESQUISA_INVALIDO);
			apresentarErros();
			telaEtiquetas();
			retorno =  true;
		}
		return retorno;
	}
	
	/* get and set */
	public List<UF> getListaUF() {
		return listaUF;
	}

	public void setListaUF(List<UF> listaUF) {
		this.listaUF = listaUF;
	}

	public String getUfSelecionado() {
		return ufSelecionado;
	}

	public void setUfSelecionado(String ufSelecionado) {
		this.ufSelecionado = ufSelecionado;
	}

	public List<Destinatario> getListaDestinatario() {
		return listaDestinatario;
	}

	public void setListaDestinatario(List<Destinatario> listaDestinatario) {
		this.listaDestinatario = listaDestinatario;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	public List<Cidade> getCidades() {
		return cidades;
	}

	public void setCidades(List<Cidade> cidades) {
		this.cidades = cidades;
	}
	
	
	
}
